Q: Sequence Grabber ÇégópÇ∑ÇÈç€Çà Source ãÈå`óÃàÊÅAVideo ãÈå`óÃàÊÅAChannel ãÈå`óÃàÊÇÃä÷åWÇóùâǵÇÊǧÇΔǵǃǢNjÇ∑ÅBDZÇÍÇÁÇê›íËÇ∑ÇÈåàNjǡÇΩï˚ñ@ÇÕdžÇÈÇÃÇ≈ǵÇÂǧǩÅH
A: QuickTime Çà Sequence Grabber ÇégǡǃâfëúÇéÊìæÇ∑ÇÈÇΔÇ´Ç…ÇÕÅAéÊìæÇ∑ÇÈâfëúÇÃïîï™ÇéwíËÇ∑ÇÈÅA3 ǬÇÃãÈå`Ç™åÆÇΔÇ»ÇËÇ‹Ç∑ÅBÇ∑Ç»ÇÌÇøÅASource ãÈå`óÃàÊÅAVideo ãÈå`óÃàÊÅAChannel ãÈå`óÃàÊÇ≈Ç∑ÅBDZÇÍÇÁÇÃãÈå`óÃàÊÇÕÅADZÇÍÇ©ÇÁÉLÉÉÉvÉ`ÉÉÇ∑ÇÈÉ\Å[ÉXÉCÉÅÅ[ÉWÇÃëÂÇ´Ç≥ÇΔÅAÉLÉÉÉvÉ`ÉÉå„ÇÃÉCÉÅÅ[ÉWÇÇ«ÇÃÇÊǧDžï\é¶Ç∑ÇÈÇ©Çêßå‰ÇµÇ‹Ç∑ÅBDZÇÍÇÁÇÃãÈå`óÃàÊÇÃä÷åWÇóùâÇ∑ÇÈDZÇΔÇÕÅAàÍïîÇ™êÿÇËéÊÇÁÇÍǃǢÇÈÉCÉÅÅ[ÉWÇÉLÉÉÉvÉ`ÉÉÇ∑ÇÈèÍçáÇ‚ÅiDZÇÃèÍçá Video ãÈå`óÃàÊÇÕÅASource ãÈå`óÃàÊÇÃàÍïîÇ≈džÇÈÇΔíËã`Ç≥ÇÍÇ‹Ç∑ÅjÅA ÉLÉÉÉvÉ`ÉÉǵÇΩÉCÉÅÅ[ÉWÇ™ Sequence Grabber Ç…ÇÊǡǃï\é¶ópÇ…ägëÂèkè¨Ç≥ÇÍÇÈï˚ñ@ÇóùâÇ∑ÇÈÇÃÇ…ñóßÇøÇ‹Ç∑ÅB
Source ãÈå`óÃàÊÇÕÅASGGetSrcVideoBounds ÇåƒÇ—èoǵǃéÊìæÇ≈Ç´ÅAÉAÉNÉeÉBÉuÇ»É\Å[ÉXâfëúÇÃã´äEãÈå`ëSëÃÇÃÉTÉCÉYÇé¶ÇµÇ‹Ç∑ÅBDZÇÃÉTÉCÉYÇÕÅAÉ\Å[ÉXÇÃì¸óÕå`éÆÇ…è]ǡǃÅAVideo Digitizer Ç…ÇÊǡǃê›íËÇ≥ÇÍÇ‹Ç∑ÅBíºê⁄ê›íËÇ∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÇ™ÅAì¸óÕå`éÆÇ…ÇÊǡǃïœÇÌÇËÇ‹Ç∑ÅB
Video ãÈå`óÃàÊÇÕÅAÉfÉtÉHÉãÉgÇ≈ÇÕÅASource ãÈå`óÃàÊÇΔìØÇ∂Ç…ê›íËÇ≥ÇÍÅAÉLÉÉÉvÉ`ÉÉǵÇÊǧÇΔÇ∑ÇÈÉ\Å[ÉXâfëúÇÃÉCÉÅÅ[ÉWÇÃàÍïîÇé¶ÇµÇ‹Ç∑ÅBDZÇÍÇÕÅAÉÜÅ[ÉUÇ™é¿ç€Ç…ñ⁄Ç…Ç∑ÇÈDZÇΔÇ…Ç»ÇÈÉCÉÅÅ[ÉWÇ≈Ç∑Ç™ÅAÇ‹ÇæägëÂèkè¨ÇÕÇ»Ç≥ÇÍǃǢNjÇπÇÒÅBDZÇÃãÈå`óÃàÊÇÕÅASGGetVideoRect ÇΔ SGSetVideoRect ÇégǡǃÅAéÊìæÇ®ÇÊÇ—ê›íËÇ≈Ç´Ç‹Ç∑ÅBVideo Digitizer Ç…ÇÊǡǃÇÕÅASource ãÈå`óÃàÊëSëÃÇÊÇËè¨Ç≥Ç¢óÃàÊÇÃÉLÉÉÉvÉ`ÉÉÇ™Ç≈ǴǻǢèÍçáǙdžÇËÇ‹Ç∑ÅB
Ç≥ÇÁÇ…ÅAÉ\Å[ÉXâfëúÉCÉÅÅ[ÉWÇÉLÉÉÉvÉ`ÉÉÇ∑ÇÈïîï™Çè⁄ç◊Ç…ê›íËǵÇΩdžÇΔÅAChannel ãÈå`óÃàÊÇΔåƒÇŒÇÍÇÈÉLÉÉÉvÉ`ÉÉå„ÇÃâfëúÉCÉÅÅ[ÉWÇÃäÛñ]ÇÃÉTÉCÉYÇ SGSetChannelBounds Ç…ÇÊǡǃéwíËǵNjÇ∑ÅBChannel ãÈå`óÃàÊÇÕÅAÉ`ÉÉÉlÉãÇÃï\é¶ã´äEãÈå`Çé¶ÇµÇ‹Ç∑ÅB
èdóvÅF SGSetChannelBounds ÇÕÅAíPÇ…ÉNÉâÉCÉAÉìÉgë§Ç≈ãÈå`óÃàÊÇÃäÛñ]ÇÃÉTÉCÉYÇéwíËÇ≈Ç´ÇÈÇÊǧDžǵÇΩLJÇÃÇ≈Ç∑ÅBVideo Digitizer Ç©ÇÁï‘Ç≥ÇÍÇÈé¿ç€ÇÃîÕàÕÇÕàŸÇ»ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBÉLÉÉÉvÉ`ÉÉå„ÇÃâfëúÇÃÉTÉCÉYÇΔägëÂèkè¨Ç…ǬǢǃÉNÉâÉCÉAÉìÉgÇ…åµñßÇ»óvåèǙdžÇÈèÍçáÇ…ÇÕÅAÉLÉÉÉvÉ`ÉÉå„ÇÃâfëúÇïKóvÇ…âûÇ∂ǃí≤êÆÇ≈Ç´ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB
|
ê} 1 Ç…ÅAǪÇÍǺÇÍÇÃãÈå`óÃàÊÇÃä÷åWÇé¶ÇµÇ‹Ç∑ÅB
SourceÅAVideoÅAChannel ÇÃäeãÈå`óÃàÊÇÕÅAǪÇÍǺÇÍ {0, 0, 1200, 1600}ÅA{50, 50, 770, 930}ÅA{0, 0, 288, 352} Ç≈Ç∑ÅB
ê} 1.äeãÈå`óÃàÊÇÃëäå›ä÷åW
|
Video ãÈå`óÃàÊÇΔ Channel ãÈå`óÃàÊÇéwíËÇ∑ÇÈÇ…ÇÕÅAïKóvÇ»ägëÂèkè¨ÇçsÇ¡ÇΩ Source ãÈå`óÃàÊÇΔÅAägëÂèkè¨ÇçsÇ¡ÇΩ Video ãÈå`óÃàÊÇëIÇ—Ç‹Ç∑ÅBDZÇÍÇÁÇÃãÈå`óÃàÊÇëIÇÒÇæÇ†ÇΔÅAÉäÉXÉg 1 Ç…é¶Ç∑ÇÊǧDžèàóùÇçsÇ¢ÅAVideo ÇΔ Channel ÇÃãÈå`óÃàÊÇê›íËǵNjÇ∑ÅB
ÉäÉXÉg 1. Video ãÈå`óÃàÊÇΔ Channel ãÈå`óÃàÊÇÃéwíË
|
ComponentResult SetVideoChannelBounds(SGChannel videoChannel,
const Rect *scaledSourceBounds,
const Rect *scaledVideoBounds)
{
Rect sourceBounds;
Rect videoBounds;
Rect channelBounds;
MatrixRecord scaledSourceBoundsToSourceBounds;
ComponentResult err;
// scaledSourceBounds Ç Source ãÈå`óÃàÊÇ…ïœä∑Ç∑ÇÈ
// çsóÒÇåvéZÇ∑ÇÈ
SGGetSrcVideoBounds(videoChannel, &sourceBounds);
RectMatrix(&scaledSourceBoundsToSourceBounds,
scaledSourceBounds, &sourceBounds);
// ìØÇ∂ïœä∑Ç scaledVideoBounds
// Ç…ìKópǵ Video ãÈå`óÃàÊÇéÊìæÇ∑ÇÈ
videoBounds = *scaledVideoBounds;
TransformRect(&scaledSourceBoundsToSourceBounds, &videoBounds, 0);
err = SGSetVideoRect(videoChannel, &videoBounds);
if ((digiUnimpErr == err) || (qtParamErr == err)) {
// ÉrÉfÉIÉfÉWÉ^ÉCÉUÇ…ÇÊǡǃÇÕÅAÉtÉåÅ[ÉÄëSëÃÇÃÉLÉÉÉvÉ`ÉÉÅAÇ‹ÇΩÇÕì¡íËÇÃÉTÉCÉYÇ≈ÇÃÉLÉÉÉvÉ`ÉÉ
// ÇÃÇ›ÉTÉ|Å[ÉgÇ∑ÇÈÅBóvãÅǵÇΩ Video ãÈå`óÃàÊÇ…ëŒâûÇ≈ǴǻǢèÍçáÇ…ÅA
// qtParamErr Ç‹ÇΩÇÕ digiUnimpErr Ç™ï‘Ç≥ÇÍÇÈ
err = SGSetVideoRect(videoChannel, &sourceBounds);
}
if (err) goto bail;
// Channel ãÈå`óÃàÊÇÕ (0, 0) Ç…ÉIÉtÉZÉbÉgÇ≥ÇÍÇΩ scaledVideoBounds
channelBounds = *scaledVideoBounds;
OffsetRect(&channelBounds, -channelBounds.left, -channelBounds.top);
// SGSetChannelBounds ÇÕÅAíPÇ…ÉNÉâÉCÉAÉìÉgë§Ç≈ãÈå`óÃàÊÇÃäÛñ]ÉTÉCÉYÇéwíËÇ≈Ç´ÇÈÇÊǧDžǵǃǢÇÈ
// Ç…âflǨǻǢÅBÉCÉÅÅ[ÉWãLèqÇà vDig Ç…ÇÊǡǃï‘Ç≥ÇÍÇÈé¿ç€ÇÃãÈå`óÃàÊÇÕÅA
// àŸÇ»ÇÈèÍçáǙdžÇÈ
err = SGSetChannelBounds(videoChannel, &channelBounds);
bail:
return err;
}
|
éQçléëóøÅF
[2003 îN 7 åé 16 ì˙]
|